package Leetcode.ArrayAndLinkedList.removeDuplicates26;

/**
 * 双指针法 耗时较短
 * 起初 q = p+1
 * 开始遍历整个数组 如果p和q相等
 * 则q往后挪 当q与p不相等时 将q的值赋值给p+1
 * 再将p和q分别往后+1
 */
public class Solution2 {
    public int removeDuplicates(int[] nums) {
        if (nums == null) {
            return 0;
        }
        if (nums.length < 2) {
            return 1;
        }
        int p = 0;
        int q = 1;
        while(q < nums.length) {
            if(nums[p] == nums[q]) {
                q++;
                continue;
            }
            if(nums[p] != nums[q]) {
                nums[p+1] = nums[q];
                p++;
                q++;
            }
        }

        return p + 1;
    }

    public static void main(String[] args) {
        int nums[] = {0, 0, 0, 0, 0};
        Solution2 solution = new Solution2();
        System.out.println('\n' + "len :" + solution.removeDuplicates(nums));
    }
}

//
//  if(nums == null ) {
//          return 0;
//          }
//          if(nums.length < 2) {
//        return 1;
//        }
//        int p = 0;
//        int q = 1;
//        for(int i = 0; i < nums.length; i++) {
//        if(q == nums.length) {
//        return p+1;
//        }
//        if (nums[p] == nums[q]) {
//        q++;
//        } else{
//        nums[p+1] = nums[q];
//        p++;
//        q++;
//        }
//        }
//
//        return p+1;
